package com.minshenglife.zanzan.web.weixin.service;
//
//import java.io.BufferedReader;  
//import java.io.DataOutputStream;
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.FileNotFoundException;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.io.InputStream;  
//import java.io.InputStreamReader;  
//import java.io.OutputStream;  
//import java.net.ConnectException;  
//import java.net.HttpURLConnection;
//import java.net.MalformedURLException;
//import java.net.URL;  
//import java.util.HashMap;
//import java.util.Map;
//
//import javax.net.ssl.HttpsURLConnection;  
//import javax.net.ssl.SSLContext;  
//import javax.net.ssl.SSLSocketFactory;  
//import javax.net.ssl.TrustManager;  
//import org.apache.struts2.ServletActionContext;
//
//import nationsky.pojo.AccessToken;
//import nationsky.pojo.Menu;
//import net.sf.json.JSONObject;  
//   
///** 
// * 公众平台通用接口工具类 
// *  
// * @author  techlon
// * @date 
// */  
//public class WeixinUtil {
//	public static Map< String , AccessToken> tokenMap = new HashMap<String, AccessToken>();
////	public static Map<String, Object> map  = new HashMap<String, Object>();
//	
//	/** 
//     * 发起https请求并获取结果 
//     * 
//     * @param requestUrl 请求地址 
//     * @param requestMethod 请求方式（GET、POST） 
//     * @param outputStr 提交的数据 
//     * @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值) 
//     */  
//    public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) {  
//    	  JSONObject jsonObject = null;  
//          StringBuffer buffer = new StringBuffer();  
//          try { 
////        	  map.put("start", "start");
//        	  System.out.println("start----------------------httpsRequest");
//              // 创建SSLContext对象，并使用我们指定的信任管理器初始化  
//              TrustManager[] tm = { new MyX509TrustManager() };  
//              SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");  
//              sslContext.init(null, tm, new java.security.SecureRandom());  
//              // 从上述SSLContext对象中得到SSLSocketFactory对象  
//              SSLSocketFactory ssf = sslContext.getSocketFactory();  
//              System.out.println("ssf-----------"+ssf);
//              URL url = new URL(null,requestUrl,new sun.net.www.protocol.https.Handler());  
////              map.put("url", url);
//              System.out.println("url------------"+url);
//              HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();  
//              httpUrlConn.setSSLSocketFactory(ssf);  
//    
//              httpUrlConn.setDoOutput(true);  
//              httpUrlConn.setDoInput(true);  
//              httpUrlConn.setUseCaches(false);  
//              // 设置请求方式（GET/POST）  
//              httpUrlConn.setRequestMethod(requestMethod);  
////              map.put("httpUrlConn", httpUrlConn);
//              System.out.println("httpUrlConn------"+httpUrlConn);
//              if ("GET".equalsIgnoreCase(requestMethod))  
//                  httpUrlConn.connect();  
//    
//              // 当有数据需要提交时  
//              if (null != outputStr) {  
//                  OutputStream outputStream = httpUrlConn.getOutputStream();  
//                  // 注意编码格式，防止中文乱码  
//                  outputStream.write(outputStr.getBytes("UTF-8"));  
//                  outputStream.close();  
//              }  
//    
//              // 将返回的输入流转换成字符串  
//              InputStream inputStream = httpUrlConn.getInputStream();
////              map.put("InputStream", inputStream);
//              InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); 
////              map.put("InputStreamReader", inputStreamReader);
//              BufferedReader bufferedReader = new BufferedReader(inputStreamReader);  
//    
//              String str = null;  
//              System.out.println("startra bufferedReader++++");
//              while ((str = bufferedReader.readLine()) != null) {  
//                  buffer.append(str);  
////                  map.put("str", map.get("str")+str);
//                  System.out.println(str);
//              }  
//              System.out.println("end bufferedReader+++++");
//              bufferedReader.close();  
//              inputStreamReader.close();  
//              // 释放资源  
//              inputStream.close();  
//              inputStream = null;  
//              httpUrlConn.disconnect();  
//              System.out.println(buffer.toString());
//              jsonObject = JSONObject.fromObject(buffer.toString());  
//              System.out.println(jsonObject);
//          } catch (ConnectException ce) { 
//        	  ce.printStackTrace();
////        	  map.put("ConnectException", ce.toString());
//        	  System.out.println("ConnectException"+ce.toString());
//          } catch (Exception e) {
//        	  e.printStackTrace();
////        	  map.put("Exception", e.toString());
//        	  System.out.println("Exception"+e.toString());
//          }  
////          map.put("end", "end");
//          System.out.println("end-------------------httpsRequest");
//          return jsonObject;    
//    }   
//    
//    /**
//     *  获取access_token的接口地址（GET） 限200（次/天）  
//     */
//    public final static String access_token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";  
//      
//    /** 
//     * 获取access_token 
//     * 
//     * @param appid 凭证 
//     * @param appsecret 密钥 
//     * @return 
//     */  
//    public static AccessToken getAccessToken(String appid, String appsecret) { 
//    	System.out.println("start getAccessToken--------------");
//        //AccessToken accessToken = null;     	
//    	AccessToken accessToken = tokenMap.get(appid);
////    	map.put("accessTokenMap", accessToken != null ? accessToken.toString() : accessToken);
//    	boolean isExpires = true;
//    	if(accessToken != null){
//    		System.out.println("if(accessToken != null)"+accessToken.toString());
//    		Long tokeCreateTime = accessToken.getCteateTime();
//        	if(tokeCreateTime != null){
//        		Long now = System.currentTimeMillis();
//        		Long timeDifference = now - tokeCreateTime;
//        		if(timeDifference/1000 < accessToken.getExpiresIn()){
//        			isExpires = false;
//        		}
//        	}
//    	}
////    	map.put("isExpires", isExpires);
//    	System.out.println("isExpires="+isExpires);
//    	if(isExpires){
//    		String requestUrl = access_token_url.replace("APPID", appid).replace("APPSECRET", appsecret);
////    		map.put("requestUrl", requestUrl);
//    		System.out.println("requestUrl-----------"+requestUrl);
//            JSONObject jsonObject = httpsRequest(requestUrl, "GET", null);
//            boolean ishttpsRequest = false;
//            
//            // 如果请求成功  
//            if (null != jsonObject) {
//            	ishttpsRequest = true;
////            	map.put("tokenjson", jsonObject.toString()); 
//                try {  
//                    accessToken = new AccessToken();
//                    
//                    accessToken.setToken(jsonObject.getString("access_token"));  
//                    accessToken.setExpiresIn(jsonObject.getInt("expires_in")); 
//                    accessToken.setCteateTime(System.currentTimeMillis());
//                    tokenMap.put(appid, accessToken);
//                    System.out.println(accessToken.getToken());
//                } catch (Exception e) {
//                	e.printStackTrace();
////                	map.put("getAccessToken", e.toString());
//                	//JSONException e
//                	// accessToken = null;  
//                     // 获取token失败  
//                    // log.error("获取token失败 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg"));  
//                }  
//            }
////            else{map.put("tokenjson", "null");}
//            System.out.println("ishttpsRequest-----------"+ishttpsRequest);
//    	}
//    	
//        System.out.println("end getAccessToken-------------");
//        return accessToken;  
//    }
//    
//    /**
//     *  菜单创建（POST） 限100（次/天）  
//     */
//    public static String menu_create_url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";  
//      
//    /** 
//     * 创建菜单 
//     *  
//     * @param menu 菜单实例 
//     * @param accessToken 有效的access_token 
//     * @return 0表示成功，其他值表示失败 
//     */  
//    public static int createMenu(Menu menu, String accessToken) {  
//        int result = 0;  
//      
//        // 拼装创建菜单的url  
//        String url = menu_create_url.replace("ACCESS_TOKEN", accessToken);  
//        // 将菜单对象转换成json字符串  
//        String jsonMenu = JSONObject.fromObject(menu).toString();
//        System.out.println(jsonMenu);
//        // 调用接口创建菜单  
//        JSONObject jsonObject = httpsRequest(url, "POST", jsonMenu);  
//        if (null != jsonObject) {
////        	map.put("createMenu", jsonObject.toString());
//            if (0 != jsonObject.getInt("errcode")) {  
//                result = jsonObject.getInt("errcode");  
//             //log.error("创建菜单失败 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg"));  
//            }  
//        }  
//      
//        return result;  
//    }  
//    
//    /**
//     * 获取用户基本信息的接口地址
//     */
//    public  static String PERSON_BASE_MESSAGE  = " https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";
//   												
//    /**
//     *  获取用户基本信息
//     *  
//     * @param appId 开发者凭据
//     * @param appSecret
//     * @param openId 普通用户的标识，对当前公众号唯一
//     */
//    public static JSONObject getPerson(String appId,String appSecret,String openId){
//    	try {
//    		// 调用接口获取access_token  
//            AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//            
//            //拼装获取用户基本信息的URL
//        	String url = PERSON_BASE_MESSAGE.replace("ACCESS_TOKEN", at.getToken()).replace("OPENID", openId);
//        	//调用接口获取用户基本信息
//        	JSONObject jsonObject = httpsRequest(url, "POST", null);
//        	if(null !=jsonObject){
//        		if (jsonObject.containsKey("errcode")) {
//        				return null;
//                }else{
//                	return jsonObject;
//                }
//        	}
//		} catch (Exception e) {
//			return null;
//		}
//    	
//    	return null;
//    }
//    
//    public static JSONObject getPersonJson(String appId,String appSecret,String openId){
//    	try {
//    		// 调用接口获取access_token  
//            AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//            
//            //拼装获取用户基本信息的URL
//        	String url = PERSON_BASE_MESSAGE.replace("ACCESS_TOKEN", at.getToken()).replace("OPENID", openId);
//        	//调用接口获取用户基本信息
//        	JSONObject jsonObject = httpsRequest(url, "POST", null);
//        	if(null !=jsonObject){
//                return jsonObject;
//        	}
//		} catch (Exception e) {
//			return null;
//		}
//    	
//    	return null;
//    }
//    
//    /** 
//     * 发起http请求并获取结果 
//     *  
//     * @param requestUrl 请求地址 
//     * @param requestMethod 请求方式（GET、POST） 
//     * @param outputStr 提交的数据 
//     * @return Object() 
//     */  
//    public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) {  
//        JSONObject jsonObject = null;  
//        StringBuffer buffer = new StringBuffer();  
//        try {  
//
//            URL url = new URL(requestUrl);  
//            HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();  
//  
//            httpUrlConn.setDoOutput(true);  
//            httpUrlConn.setDoInput(true);  
//            httpUrlConn.setUseCaches(false);  
//            // 设置请求方式（GET/POST）  
//            httpUrlConn.setRequestMethod(requestMethod);  
//  
//            if ("GET".equalsIgnoreCase(requestMethod))  
//                httpUrlConn.connect();  
//  
//            // 当有数据需要提交时  
//            if (null != outputStr) {  
//                OutputStream outputStream = httpUrlConn.getOutputStream();  
//                // 注意编码格式，防止中文乱码  
//                outputStream.write(outputStr.getBytes("UTF-8"));  
//                outputStream.close();  
//            }  
//  
//            // 将返回的输入流转换成字符串  
//            InputStream inputStream = httpUrlConn.getInputStream();  
//            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");  
//            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);  
//  
//            String str = null;  
//            while ((str = bufferedReader.readLine()) != null) {  
//                buffer.append(str);  
//                System.out.println(str+"");
//            }  
//            bufferedReader.close();  
//            inputStreamReader.close();  
//            // 释放资源  
//            inputStream.close();  
//            inputStream = null;  
//            httpUrlConn.disconnect();  
//            jsonObject = JSONObject.fromObject(buffer.toString());  
//        } catch (ConnectException ce) {  
//        } catch (Exception e) { 
//        	e.printStackTrace();
//        }  
//        return jsonObject;  
//    }  
//    /** 
//     * 发起http请求上传文件并获取结果 
//     *  
//     * @param requestUrl 请求地址 
//     * @param requestMethod 请求方式（GET、POST） 
//     * @param filename 文件名
//     * @param file 文件
//     * @param content_type 文件类型
//     * @param filePath 文件路径
//     * @return Object() 
//     */  
//    public static JSONObject httpRequest(String requestUrl, String requestMethod,String filename, File file,String content_type, String filePath) {  
//    	String end="\r\n";
//    	String twoHyphens = "--"; //用于拼接
//    	String boundary="*****"; //用于拼接 可自定义
//    	JSONObject jsonObject = null;  
//    	
//    	StringBuffer buffer = new StringBuffer();  
//    	try {   
//    		URL url = new URL(requestUrl);  
//    		HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();  
//    		
//    		httpUrlConn.setDoOutput(true);  
//    		httpUrlConn.setDoInput(true);  
//    		httpUrlConn.setUseCaches(false);  
//    		// 设置请求方式（GET/POST）  
//    		httpUrlConn.setRequestMethod(requestMethod);  
//    		httpUrlConn.setRequestProperty("Connection", "Keep-Alive");
//    		httpUrlConn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
//    		httpUrlConn.connect();  
//    		//获取输出流对象，准备上传文件
//    		DataOutputStream dos=new DataOutputStream(httpUrlConn.getOutputStream());
//    		dos.writeBytes(twoHyphens+boundary+end);
//    		dos.writeBytes("Content-Disposition: form-data; name=\""+file+"\";filename=\""
//    		+filename+";filelength=\""+filePath+";Content-Type=\""+content_type+end);
//    		dos.writeBytes(end);
//    		// 当有数据需要提交时  
//    		if (null != file) { 
//    			
//    			FileInputStream fis = new FileInputStream(file);
//			
//				byte[] buf = new byte[1024];
//				int len = 0;
//				
//    			OutputStream outputStream = httpUrlConn.getOutputStream();  
//    			while((len = fis.read(buf))>0){
//    				outputStream.write(buf,0,len);   				
//    			}   			
//    			outputStream.close();  
//    		}  
//    		
//    		// 将返回的输入流转换成字符串  
//    		InputStream inputStream = httpUrlConn.getInputStream();  
//    		InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");  
//    		BufferedReader bufferedReader = new BufferedReader(inputStreamReader);  
//    		
//    		String str = null;  
//    		while ((str = bufferedReader.readLine()) != null) {  
//    			buffer.append(str);  
//    			System.out.println(str+"");
//    		}  
//    		bufferedReader.close();  
//    		inputStreamReader.close();  
//    		// 释放资源  
//    		inputStream.close();  
//    		inputStream = null;  
//    		httpUrlConn.disconnect();  
//    		jsonObject = JSONObject.fromObject(buffer.toString());  
//    	} catch (ConnectException ce) {  
//    	} catch (Exception e) { 
//    		e.printStackTrace();
//    	}  
//    	return jsonObject;  
//    }  
//    
//    /**
//     * 调用接口类型素材
//     * 请求第三方服务器接口方法
//     * 
//     * @param requestUrl
//     * @param requestMethod
//     * @param outputStr
//     * @return
//     */
//    public static String httpRequestToString(String requestUrl, String requestMethod, String outputStr) {  
//        StringBuffer buffer = new StringBuffer();  
//        try {  
//
//            URL url = new URL(requestUrl);  
//            HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();  
//  
//            httpUrlConn.setDoOutput(true);  
//            httpUrlConn.setDoInput(true);  
//            httpUrlConn.setUseCaches(false);  
//            // 设置请求方式（GET/POST）  
//            httpUrlConn.setRequestMethod(requestMethod);  
//  
//            if ("GET".equalsIgnoreCase(requestMethod))  
//                httpUrlConn.connect();  
//  
//            // 当有数据需要提交时  
//            if (null != outputStr) {  
//                OutputStream outputStream = httpUrlConn.getOutputStream();  
//                // 注意编码格式，防止中文乱码  
//                outputStream.write(outputStr.getBytes("UTF-8"));  
//                outputStream.close();  
//            }  
//  
//            // 将返回的输入流转换成字符串  
//            InputStream inputStream = httpUrlConn.getInputStream();  
//            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");  
//            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);  
//  
//            String str = null;  
//            while ((str = bufferedReader.readLine()) != null) {  
//                buffer.append(str);  
//            }  
//            bufferedReader.close();  
//            inputStreamReader.close();  
//            // 释放资源  
//            inputStream.close();  
//            inputStream = null;  
//            httpUrlConn.disconnect();  
//        } catch (ConnectException ce) {  
//        	return "0";
//        } catch (Exception e) {  
//        	return "0";
//        }  
//        return buffer.toString();  
//    }  
//    
//    /**
//     * 发送客服消息调接口
//     */
//    public  static String SEND_SERVICE_MESSAGE  = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN";
//    
//    /**
//     * 发送客服消息
//     * @param appId 公众号ID
//     * @param appSecret 公众号appSecret
//     * @param jsonStr 消息json
//     * @return
//     */
//    public static boolean sendMessage(String appId,String appSecret,String jsonStr){
//    	try {
//    		int result = 0;
//        	// 调用接口获取access_token  
//            AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//            //拼装发送客服消息的URL
//        	String url = SEND_SERVICE_MESSAGE.replace("ACCESS_TOKEN", at.getToken());
//            //String url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token="+at.getToken();
//        	//调用接口发送客服消息
//        	JSONObject jsonObject = httpsRequest(url, "POST", jsonStr);
//        	if (null != jsonObject) {  
//                if (0 != jsonObject.getInt("errcode")) {  
//                    result = jsonObject.getInt("errcode");  
//                }  
//            }  
//        	// 判断发送消息的结果  
//            if (0 == result) {  
//            	return true;
//            }else {  
//                 return false;
//            }
//		} catch (Exception e) {
//			return false;
//		}
//    	
//    }
//    
//    /**
//     * 多媒体文件下载接口
//     */
//    public static String DOWNLOAD_MEDIA = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID";	
//	
//    /**
//     * 多媒体文件下载方法
//     * 
//     * @param appId 公众号ID
//     * @param appSecret 公众号appSecret
//     * @param mediaid 文件的ID
//     * @param fileType 文件类型
//     */
//    public static void downloadMedia(String appId,String appSecret,String mediaid,String fileType){
//    		// 调用接口获取access_token  
//    		AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//	    	// 拼装下载文件的URL
//	    	String downloadUrl = DOWNLOAD_MEDIA.replace("ACCESS_TOKEN",at.getToken()).replace("MEDIA_ID", mediaid);
//	    	URL urls = null;
//	    	OutputStream os = null;
//	    	String realPath = null;
//			try {
//				urls = new URL(downloadUrl);
//				//生成媒体存储的地址
//				String file = "";
//				realPath = ServletActionContext.getServletContext().getRealPath("/WXMedia")+"/";
//				if(fileType.equals("image")){
//					file = realPath+mediaid+".jpg";
//				}else if(fileType.equals("voice")){
//					file = realPath+mediaid+".amr";
//				}
//				
//				os = new FileOutputStream(file,true);
//			} catch (MalformedURLException e) {
//				e.printStackTrace();
//			} catch (FileNotFoundException e) {
//				e.printStackTrace();
//			} 
//			 
//	        byte[]  buff=new byte[1024];  
//	        int hasread=0;  
//	        //打开盖URL对应的资源的输入流  
//	        InputStream is = null;
//	        //将URL资源下载到本地  
//	        try {
//	        	is = urls.openStream();
//	        	while((hasread=is.read(buff))>0)  
//				{  
//				  os.write(buff, 0, hasread);  
//				}
//				is.close();
//				os.close();
//			} catch (IOException e) {
//				e.printStackTrace();
//			}  
//			
//			AmrToMp3.change(realPath+mediaid+".amr", realPath+mediaid+".mp3");
//	    }
//    
//    /**
//     * 上传多媒体文件接口
//     */
//    public static String UPLOAD_MEDIA = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE";
//    
//    /**
//     * 上传多媒体文件
//     * @param appId 开发者凭据
//     * @param appSecret
//     * @param media	媒体文件
//     * @param type	文件类型
//     */
//    public static JSONObject uploadMedia(String appId,String appSecret,String type,String filename, File media,
//    		String content_type, String filePath){
//    	String end="\r\n";
//    	String twoHyphens = "--"; //用于拼接
//    	String boundary="*****"; //用于拼接 可自定义
//    	String url = "";
//    	StringBuffer bf = new StringBuffer();
//    	JSONObject jsonObject = new JSONObject();
//    	try {
//    		// 调用接口获取access_token  
//    		AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//    		//拼装上传多媒体的URL
//    		url = UPLOAD_MEDIA.replace("ACCESS_TOKEN", at.getToken()).replace("TYPE", type);
//    		URL submit = new URL(url);
//    		HttpURLConnection conn=(HttpURLConnection) submit.openConnection();
//    		conn.setDoInput(true);
//    		conn.setDoOutput(true);
//    		conn.setUseCaches(false);
//
//    		conn.setRequestMethod("POST");
//    		conn.setRequestProperty("Connection", "Keep-Alive");
//    		conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
//    		//获取输出流对象，准备上传文件
//    		DataOutputStream dos=new DataOutputStream(conn.getOutputStream());
//    		dos.writeBytes(twoHyphens+boundary+end);
//    		dos.writeBytes("Content-Disposition: form-data; name=\""+media+"\";filename=\""
//    		+filename+";filelength=\""+filePath+";Content-Type=\""+content_type+end);
//    		dos.writeBytes(end);
//    		//对文件进行传输
//    		FileInputStream fis=new FileInputStream(media);
//    		byte[] buffer = new byte[8192]; // 8k
//    		int count = 0;
//    		while ((count = fis.read(buffer)) != -1)
//    		{
//    		dos.write(buffer, 0, count);
//    		}
//    		fis.close(); //关闭文件流
//
//    		dos.writeBytes(end);
//    		dos.writeBytes(twoHyphens + boundary + twoHyphens + end);
//    		dos.flush();
//
//    		// 将返回的输入流转换成字符串  
//    		InputStream inputStream = conn.getInputStream();  
//    		InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");  
//    		BufferedReader bufferedReader = new BufferedReader(inputStreamReader);  
//    		
//    		String str = null;  
//    		while ((str = bufferedReader.readLine()) != null) {  
//    			bf.append(str);  
//    			System.out.println(str+"");
//    		}  
//    		bufferedReader.close();  
//    		inputStreamReader.close();  
//    		// 释放资源  
//    		inputStream.close();  
//    		inputStream = null;  
//    		conn.disconnect();  
//    		jsonObject = JSONObject.fromObject(bf.toString());
//   		
//    		if(null !=jsonObject){
//    			if (jsonObject.containsKey("errcode")) {  
//    				return null;
//    			}else{
//    				return jsonObject;
//    			}
//    		}
//    	} catch (Exception e) {
//    		e.printStackTrace();
//    		System.out.println("与服务器连接发生异常错误:" + e.toString());
//    		System.out.println("连接地址是:" + url);
//    		return null;
//    	}
//    	return null;   	
//    }
//    
//    /**
//     * 获取TicketURL接口
//     */
//    public static String get_Ticket = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TICKET";	
//    
//    /**
//     * 获取TicketID（获取生成二维码所需参数）
//     * 
//     * @param 公众号ID
//     * @param 公众号秘钥
//     * @param 客服人员ID 二维码所需参数
//     * @return
//     */
//    public static JSONObject getTicket(String appid,String appSecret,String customerid) {  
//    	System.out.println("start ----------------- getTicket ");
//        JSONObject jsonObject = null;  
//        StringBuffer buffer = new StringBuffer();  
//        try {  
//        	AccessToken accesstoken = WeixinUtil.getAccessToken(appid,appSecret);
//        	String outputStr = "{\"action_name\": \"QR_LIMIT_SCENE\", \"action_info\": {\"scene\": {\"scene_id\": "+customerid+"}}}";
//        	String downloadUrl = get_Ticket.replace("TICKET", accesstoken.getToken());
//        	System.out.println("getTicketURL -------- "+downloadUrl);
//            URL url = new URL(downloadUrl);  
//            HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();  
//            httpUrlConn.setDoOutput(true);  
//            httpUrlConn.setDoInput(true);  
//            httpUrlConn.setUseCaches(false);  
//            // 设置请求方式（GET/POST）  
//            httpUrlConn.setRequestMethod("POST");  
////            if ("GET".equalsIgnoreCase("POST"))  
//                httpUrlConn.connect();  
//            // 当有数据需要提交时  
//            if (null != outputStr) {  
//                OutputStream outputStream = httpUrlConn.getOutputStream();  
//                // 注意编码格式，防止中文乱码  
//                outputStream.write(outputStr.getBytes("UTF-8"));  
//                outputStream.close();  
//            }  
//            // 将返回的输入流转换成字符串  
//            InputStream inputStream = httpUrlConn.getInputStream();  
//            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");  
//            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);  
//            String str = null;  
//            while ((str = bufferedReader.readLine()) != null) {  
//                buffer.append(str);  
//            }  
//            bufferedReader.close();  
//            inputStreamReader.close();  
//            // 释放资源  
//            inputStream.close();  
//            inputStream = null;  
//            httpUrlConn.disconnect();  
//            jsonObject = JSONObject.fromObject(buffer.toString());  
//            System.out.println("getTicket jsonObject ----"+jsonObject);
//        } catch (ConnectException ce) { ce.printStackTrace();
//        } catch (Exception e) {  e.printStackTrace();
//        }  
//        System.out.println("end ----------------- getTicket ");
//        return jsonObject;  
//    } 
//    /**
//     * 获取TicketID（获取生成二维码所需参数）
//     * 
//     * @param 公众号ID
//     * @param 公众号秘钥
//     * @param 二维码参数
//     * @return
//     */
//    public static JSONObject getTicket(String appid,String appSecret,Integer scene_id) {  
//    	System.out.println("start ----------------- getTicket ");
//    	JSONObject jsonObject = null;  
//    	try {  
//    		AccessToken accesstoken = WeixinUtil.getAccessToken(appid,appSecret);
//    		String outputStr = "{\"action_name\": \"QR_LIMIT_SCENE\", \"action_info\": {\"scene\": {\"scene_id\": "+scene_id+"}}}";
//    		String downloadUrl = get_Ticket.replace("TICKET", accesstoken.getToken());
//    		System.out.println("getTicketURL -------- "+downloadUrl);   		
//    		jsonObject = WeixinUtil.httpsRequest(downloadUrl, "POST", outputStr);
//    		System.out.println("getTicket jsonObject ----"+jsonObject);
//    	} catch (Exception e) {  e.printStackTrace();
//    	}  
//    	System.out.println("end ----------------- getTicket ");
//    	return jsonObject;  
//    } 
//    
//    /**
//     * 获取二维码接口
//     */
//    public static String get_Ticket_img = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET";
//    
//    /**
//     * 根据 ticket 获取二维码图片
//     * 
//     * @param ticket 二维码ticketID
//     * @param customerId  客服人员ID
//     * @return
//     */
//    public static String downloadTicketImg(String ticket,String customerId){
//    	URL urls = null;
//    	OutputStream os = null;
//    	String fileUrl_tab = "";
//		try {
//			String download = get_Ticket_img.replace("TICKET", ticket);
//			urls = new URL(download);
//			//生成二维码图片存储的地址
//			String fileUrl = "/wxkefu/ticketimg/";
//			String fileName = customerId+".jpg";
//			fileUrl_tab = fileUrl+fileName;
//			String file = ServletActionContext.getServletContext().getRealPath(fileUrl);
//			os = new FileOutputStream(file+"/"+fileName,true);
//			byte[]  buff = new byte[1024];  
//	        int hasread=0;  
//	        //打开盖URL对应的资源的输入流  
//	        InputStream is = null;
//	        //将URL资源下载到本地  
//	        try {
//	        	is = urls.openStream();
//	        	while((hasread=is.read(buff))>0)  
//				{  
//				  os.write(buff, 0, hasread);  
//				}
//				is.close();
//				os.close();
//			} catch (IOException e) {
//				e.printStackTrace();
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return fileUrl_tab;
//    }
//    /**
//     * 根据 ticket 获取二维码图片
//     * 
//     * @param ticket 二维码ticketID
//     * @return
//     */
//    public String downloadTicketImgForWeblogic(String ticket){
//    	OutputStream os = null;
//    	String fileUrl_tab = "";
//    	try {
//    		String download = get_Ticket_img.replace("TICKET", ticket);
//    		TrustManager[] tm = { new MyX509TrustManager() };  
//            SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");  
//            sslContext.init(null, tm, new java.security.SecureRandom());  
//            // 从上述SSLContext对象中得到SSLSocketFactory对象  
//            SSLSocketFactory ssf = sslContext.getSocketFactory();  
//            System.out.println("ssf-----------"+ssf);
//            URL url = new URL(null,download,new sun.net.www.protocol.https.Handler());  
//            System.out.println("url------------"+url);
//            HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();  
//            httpUrlConn.setSSLSocketFactory(ssf);  
//  
//            httpUrlConn.setDoOutput(true);  
//            httpUrlConn.setDoInput(true);  
//            httpUrlConn.setUseCaches(false);  
//            // 设置请求方式（GET/POST）  
//            httpUrlConn.setRequestMethod("GET");  
////            map.put("httpUrlConn", httpUrlConn);
//            System.out.println("httpUrlConn------"+httpUrlConn); 
//            httpUrlConn.connect(); 
//
//    		//生成二维码图片存储的地址
//    		String fileUrl = "/wxkefu/ticketimg/";
//    		String fileName = System.currentTimeMillis()+".jpg";
//    		fileUrl_tab = fileUrl+fileName;
//    		ClassLoader classLoader = this.getClass().getClassLoader();
//			URL resource = classLoader.getResource("/");
//			String realPath = resource.getPath();
//			realPath = realPath.substring(0, realPath.lastIndexOf("/"));
//			realPath = realPath.substring(0, realPath.lastIndexOf("/"));
//			realPath = realPath.substring(0, realPath.lastIndexOf("/"));
//    		os = new FileOutputStream(realPath+fileUrl_tab,true);
//    		byte[]  buff = new byte[1024];  
//    		int hasread=0;  
//    		//打开盖URL对应的资源的输入流  
//    		InputStream is = null;
//    		//将URL资源下载到本地  
//    		try {
//    			is = httpUrlConn.getInputStream();
//    			while((hasread=is.read(buff))>0)  
//    			{  
//    				os.write(buff, 0, hasread);  
//    			}
//                httpUrlConn.disconnect(); 
//    			is.close();
//    			os.close();
//    		} catch (IOException e) {
//    			e.printStackTrace();
//    		}
//    	} catch (Exception e) {
//    		e.printStackTrace();
//    	}
//    	return fileUrl_tab;
//    }
//    
//    /**
//     * 获取关注者列表接口
//     */
//    public static String ATTATION_LIST = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&amp;next_openid=NEXT_OPENID";
//    
//    /**
//     * 获取关注着列表
//     * @param appId 开发者凭据
//     * @param appSecret
//     * @param next_openid 拉取列表的后一个用户的OPENID
//     */
//    public static JSONObject getAttation(String appId,String appSecret,String next_openid){
//    	try {
//    		// 调用接口获取access_token  
//            AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//            
//            //拼装获取关注者列表的URL
//        	String url = ATTATION_LIST.replace("ACCESS_TOKEN", at.getToken()).replace("NEXT_OPENID", next_openid);
//        	//调用接口获取关注者列表
//        	JSONObject jsonObject = httpsRequest(url, "POST", null);
//        	if(null !=jsonObject){
//        		if (jsonObject.containsKey("errcode")) {  
//                   return null;
//                }else{
//                	return jsonObject;
//                }
//        	}
//		} catch (Exception e) {
//			return null;
//		}
//    	
//    	return null;
//    }
//    
//    /**
//     * 删除菜单接口
//     */
//    public static String MENU_DELETE_URL = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN";
//   
//    /**
//     * 删除菜单
//     * @param appId 开发者凭据
//     * @param appSecret
//     */
//    public static boolean deleteMenu(String appId, String appSecret) {  
//    	System.out.println("start deleteMenu------------------");
//    	boolean b = false;
//    	try {
//    		int result = 0; 
//            // 调用接口获取access_token  
//            AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);  
//            	// 拼装撤销菜单的url  
//                String url = MENU_DELETE_URL.replace("ACCESS_TOKEN", at.getToken());  
//                // 调用接口撤销菜单  
//                JSONObject jsonObject = httpsRequest(url, "GET", null);  
//                if (null != jsonObject) {  
//                    if (0 != jsonObject.getInt("errcode")) {  
//                        result = jsonObject.getInt("errcode");  
//                    }  
//                }  
//             // 判断菜单撤销结果  
//                if (0 == result) { 
//                	b = true;               	
//                }
//		} catch (Exception e) {
//			e.printStackTrace();			
//		}
//		if(b){
//			System.out.println("deleteMenu success-------------");
//		}else{
//			System.out.println("deleteMenu faile-------------");
//		}
//		System.out.println("deleteMenu end-------------");
//		return b;
//    }  
//    
//    /**
//     * 查询用户分组信息接口
//     */
//    public static String SEACH_USER_GROUP = "https://api.weixin.qq.com/cgi-bin/groups/get?access_token=ACCESS_TOKEN";
//    
//    /**
//     *  查询所有用户分组
//     * @param appId 开发者凭据
//     * @param appSecret
//     */
//    public static JSONObject getGroups(String appId,String appSecret){
//    	try {
//    		// 调用接口获取access_token  
//            AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//            //拼装获取用户基本信息的URL
//        	String url = SEACH_USER_GROUP.replace("ACCESS_TOKEN", at.getToken());
//        	//调用接口获取用户基本信息
//        	JSONObject jsonObject = httpsRequest(url, "POST", null);
//        	if(null !=jsonObject){
//        		if (jsonObject.containsKey("errcode")) {  
//                    return null;
//                }else{
//                	return jsonObject;
//                }
//        	}
//		} catch (Exception e) {
//			return null;
//		}    	
//    	return null;
//    }
//    
//    /**
//     * 创建用户分组接口
//     */
//    public static String CREATE_USER_GROUP = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token=ACCESS_TOKEN";
//    
//    /**
//     * 创建分组
//     * @param appId 开发者凭据
//     * @param appSecret
//     */
//    public static JSONObject creatUserGroup(String appId,String appSecret,String jsonStr){
//    	try {
//    		// 调用接口获取access_token  
//            AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//            //拼装创建分组的url
//        	String url = CREATE_USER_GROUP.replace("ACCESS_TOKEN", at.getToken());
//        	//调用接口创建分组
//        	JSONObject jsonObject = httpsRequest(url, "POST", jsonStr);
//        	if(null !=jsonObject){
//        		if (jsonObject.containsKey("errcode")) {  
//                    return null;
//                }else{
//                	return jsonObject;
//                }
//        	}
//		} catch (Exception e) {
//			return null;
//		}
//    	
//    	return null;
//    }
//    
//    /**
//     * 修改用户分组接口
//     */
//    public static String MODIFY_USER_GROUP = "https://api.weixin.qq.com/cgi-bin/groups/update?access_token=ACCESS_TOKEN";
//    
//    /**
//     * 修改分组 返回0为正常
//     * @param appId 开发者凭据
//     * @param appSecret
//     */
//    public static JSONObject modifyUserGroup(String appId,String appSecret,String jsonStr){
//    	try {
//    		// 调用接口获取access_token  
//            AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//            //拼装修改分组的URL
//        	String url = MODIFY_USER_GROUP.replace("ACCESS_TOKEN", at.getToken());
//        	//调用接口修改分组名
//        	JSONObject jsonObject = httpsRequest(url, "POST", jsonStr);
//        	if(null !=jsonObject){
//        		if (0 != jsonObject.getInt("errcode")) {  
//                   return null;
//                }else{
//               	return jsonObject;
//                }
//        	}
//		} catch (Exception e) {
//			return null;
//		}  	
//    	return null;
//    }
//    
//    /**
//     * 移动用户分组接口
//     */
//    public static String REMOVE_USER_GROUP = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=ACCESS_TOKEN";
//    
//    /**
//     * 移动用户分组 0为正常
//     * @param appId 开发者凭据
//     * @param appSecret
//     * @param jsonStr
//     */
//    public static JSONObject removeUserGroup(String appId,String appSecret,String jsonStr){
//    	try {
//    		// 调用接口获取access_token  
//            AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//            //拼装移动用户分组的URL
//        	String url = REMOVE_USER_GROUP.replace("ACCESS_TOKEN", at.getToken());
//        	//调用接口移动用户分组名
//        	JSONObject jsonObject = httpsRequest(url, "POST", jsonStr);
//        	if(null !=jsonObject){
//        		if (0 != jsonObject.getInt("errcode")) {  
//                   return null;
//                }else{
//                	return jsonObject;
//                }
//        	}
//		} catch (Exception e) {
//		return null;
//		}
//		return null;   	
//    }
//    /**
//     * 查询用户所在分组接口
//     */
//    public static String SEARCH_USER_GROUPID = "https://api.weixin.qq.com/cgi-bin/groups/getid?access_token=ACCESS_TOKEN";
//    /**
//     * 查询用户所在分组
//     * @param appId
//     * @param appSecret
//     * @param jsonStr
//     * @return
//     */
//    public static JSONObject searchUserGroupId(String appId,String appSecret,String jsonStr){
//    	try {
//    		// 调用接口获取access_token  
//            AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//            //拼装移动用户分组的URL
//        	String url = SEARCH_USER_GROUPID.replace("ACCESS_TOKEN", at.getToken());
//        	//调用接口获取用户分组名
//        	JSONObject jsonObject = httpsRequest(url, "POST", jsonStr);
//        	if(null !=jsonObject){
//        		if (jsonObject.containsKey("errcode")) {  
//                   return null;
//                }else{
//                	return jsonObject;
//                }
//        	}
//		} catch (Exception e) {
//		return null;
//		}
//		return null;  
//    }
//    /**
//     * 上传群发图文接口
//     */
//    public static String UPLOAD_QUNFA_NEWS = "https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=ACCESS_TOKEN";
//    
//    /**
//     * 上传群发图文媒体
//     * @param appId
//     * @param appSecret
//     * @param jsonStr
//     * @return
//     */
//    public static JSONObject uploadQunfaNews(String appId,String appSecret,String jsonStr){
//    	try {
//    		// 调用接口获取access_token  
//            AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//            //拼装移动用户分组的URL
//        	String url = UPLOAD_QUNFA_NEWS.replace("ACCESS_TOKEN", at.getToken());
//        	//调用接口移动用户分组名
//        	JSONObject jsonObject = httpsRequest(url, "POST", jsonStr);
//        	if(null !=jsonObject){
//        		if (jsonObject.containsKey("errcode")) {  
//                   return null;
//                }else{
//                	return jsonObject;
//                }
//        	}
//		} catch (Exception e) {
//		return null;
//		}
//		return null; 
//    }
//    
//    public static String UPLOAD_QUNFA_VIDEO = "https://file.api.weixin.qq.com/cgi-bin/media/uploadvideo?access_token=ACCESS_TOKEN ";
//    /**
//     * 获取群发视频media_id
//     * @param appId
//     * @param appSecret
//     * @param jsonStr
//     * @return
//     */
//    public static JSONObject uploadQunfaVideo(String appId,String appSecret,String jsonStr){
//    	try {
//    		// 调用接口获取access_token  
//            AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//            //拼装移动用户分组的URL
//        	String url = UPLOAD_QUNFA_VIDEO.replace("ACCESS_TOKEN", at.getToken());
//        	//调用接口移动用户分组名
//        	JSONObject jsonObject = httpsRequest(url, "POST", jsonStr);
//        	if(null !=jsonObject){
//        		if (jsonObject.containsKey("errcode")) {  
//        				return null;
//                }else{
//                	return jsonObject;
//                }
//        	}
//		} catch (Exception e) {
//		return null;
//		}
//		return null; 
//    }
//    
//    public static String QUNFA_NEWS = "https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN";
//    /**
//     * 发送群消息
//     * @param appId
//     * @param appSecret
//     * @param jsonStr
//     * @return
//     */
//   public static JSONObject Qunfa(String appId,String appSecret,String jsonStr){
//	   try {
//   		// 调用接口获取access_token  
//           AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//           //拼装移动用户分组的URL
//       	String url = QUNFA_NEWS.replace("ACCESS_TOKEN", at.getToken());
//       	//调用接口移动用户分组名
//       	JSONObject jsonObject = httpsRequest(url, "POST", jsonStr);
//       	if(null !=jsonObject){
//       		if (0 != jsonObject.getInt("errcode")) {  
//                  return null;
//               }else{
//               	return jsonObject;
//               }
//       	}
//		} catch (Exception e) {
//		return null;
//		}
//		return null;
//   }
//   
//   /**
//    * 删除群发接口
//    */
//   public static String DELETE_MASS_MESSAGE = "https://api.weixin.qq.com//cgi-bin/message/mass/delete?access_token=ACCESS_TOKEN";
//   
//   /**
//    * 删除群发
//    * @param appId
//    * @param appSecret
//    * @param jsonStr
//    * @return
//    */
//   public static JSONObject deleteMassMessage(String appId,String appSecret,String jsonStr){
//	   try {
//   		// 调用接口获取access_token  
//           AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//           //拼装移动用户分组的URL
//       	String url = DELETE_MASS_MESSAGE.replace("ACCESS_TOKEN", at.getToken());
//       	//调用接口移动用户分组名
//       	JSONObject jsonObject = httpsRequest(url, "POST", jsonStr);
//       	if(null !=jsonObject){
//       		if (0 != jsonObject.getInt("errcode")) {  
//                  return null;
//               }else{
//               	return jsonObject;
//               }
//       	}
//		} catch (Exception e) {
//		return null;
//		}
//		return null;
//   }
//   /**
//    * 获取客服聊天记录接口
//    */
//   public static String GET_CUSTOMER_SERVICE_MESSAGE_RECORD = "https://api.weixin.qq.com/cgi-bin/customservice/getrecord?access_token=ACCESS_TOKEN";
//   /**
//    *  获取客服聊天记录
//    * @param appId 
//    * @param appSecret
//    * @param jsonStr
//    * @return
//    */
//   public static JSONObject getCustomerServiceMsgRecord(String appId,String appSecret,String jsonStr){
//	   try {
//	   		// 调用接口获取access_token  
//	           AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);
//	           //拼装移动用户分组的URL
//	       	String url = GET_CUSTOMER_SERVICE_MESSAGE_RECORD.replace("ACCESS_TOKEN", at.getToken());
//	       	//调用接口移动用户分组名
//	       	JSONObject jsonObject = httpsRequest(url, "POST", jsonStr);
//	       	if(null !=jsonObject){
//	       		if (jsonObject.containsKey("errcode")) {  
//        				return null;
//	               }else{
//	               	return jsonObject;
//	               }
//	       	}
//			} catch (Exception e) {
//			return null;
//			}
//			return null;
//   }
//}
